// 原生ajax
//1、创建一个XMLHttpRequest() 对象
//2、连接服务器 open("get/post",url,true)
//3、发送请求
//if  get   send(null)
//if  post  send(data)并且设置请求头setRequestHeader("Content-Type":"application/json")
//4、接收返回值
//onreadystatechange
//readyState==4&&status==200

const ajax = function (json) {
    //json.url--http://www.hg-zn.com:9527/api/goods/type_list
    //json.type--get
    //json.params--{page:1,size:10,type:"is_best",keywords:"手机"}

    //格式化字符串
    function formatParams(params) {
        var arr = [];
        for (var attr in params) {
            //attr---page||size||type||keywords
            // encodeURIComponent()  编码
            arr.push(encodeURIComponent(attr) + "=" + encodeURIComponent(params[attr]))
        }
        arr.push("t=" + new Date().getTime()) //主要解决浏览器缓存，ajax请求数据不变化的原因
        //console.log(arr);  //[page=1,size=10,type=is_best,keywords=编码之后的手机,t=1234567890000]
        return arr.join("&")
    }

    //console.log(formatParams(json.params));
    //page=1&size=10&type=is_best&keywords=编码之后的手机&t=1234567890000
    json.params = json.params || {}


    //定义一个Promise对象
    return new Promise(function (resolve, reject) {
        //创建一个ajax对象
        const xhr = new XMLHttpRequest();
        //判断一下是get还是post
        if (json.type.toLowerCase() == "get") {
            console.log(123456)
            //如果条件成立说明get传值
            json.params = formatParams(json.params)
            //json.params  
            //page=1&size=10&type=is_best&keywords=编码之后的手机&t=1234567890000
            xhr.open("get", json.url + "?" + json.params, true) //true 代表的是异步
            xhr.send(null)
        } else if (json.type.toLowerCase() == "post") {
            xhr.open("post", json.url, true)
            xhr.setRequestHeader("Content-Type", "application/json")
            xhr.send(json.params)
        }

        xhr.onreadystatechange = function () {
            if (xhr.readyState != 4) return;
            if (xhr.readyState == 4 && xhr.status == 200) {
                resolve(JSON.parse(xhr.responseText))
            } else {
                reject("错误")
            }
        }

    })

}

export default ajax

// ajax({
//     url:"http://www.hg-zn.com:9527/api/goods/type_list",
//     type:"GET",
//     params:{
//         page:1,
//         size:10,
//         type:"is_best",
//         keywords:"手机"
//     }
// })


//jquery--ajax
// $.ajax({
//     url: "",
//     type: "get/post",
//     data: {},
//     success: function () { }
//     error:function(){}
// })


//axios  第三方的  需要下载  cnpm install axios --save
// 引入  import axios from "axios"
// axios.get(url).then((result)=>{成功回调},()=>{失败回调})
    //result.data.data
// axios.post(url,params).then(()=>{成功回调},()=>{失败回调})
    //result.data.data


//http://www.hg-zn.com:9527/api/goods/type_list?page=1&size=10&type=is_best

//url= http://www.hg-zn.com:9527/api/goods/type_list
//params={page:1,size:10,type:"is_best"}  //page=1&size=10&type=is_best

